#ifndef DYNAMIC_ARRAY_H
#define DYNAMIC_ARRAY_H

#include <iostream>
#include <cstdlib>
#include <cstring>

#define MYARRAY_TRUE 1
#define MYARRAY_FALSE 0

using namespace std;

typedef struct DYNAMIC_ARRAY {
    int* pAddr;     // 数组元素
    int size;       // 当前数组中元素个数
 
    int capacity;   // 当前数组的容量
}Dynamic_Array;

// 初始化动态数组
Dynamic_Array* Init_Array();

// 指定位置插入元素
int PushBack_Array(Dynamic_Array* arr, int pos, int value);

// 判断数组是否为空
int IsEmpty_Array(Dynamic_Array* arr);

// 删除指定位置元素
int RemoveByPos_Array(Dynamic_Array* arr, int pos);

// 查找指定元素的位置
int Find_Array(Dynamic_Array* arr, int value);

// 删除第一个值是value的元素
int RemoveByValue_Array(Dynamic_Array* arr, int value);

// 遍历数组元素
int Print_Array(Dynamic_Array* arr);

// 获取当前容量
int Capacity_Array(Dynamic_Array* arr);

// 获取当前元素个数
int Size_Array(Dynamic_Array* arr);

// 获取指定位置的元素
int At_Array(Dynamic_Array* arr, int pos);

// 清空数组
int Clear_Array(Dynamic_Array* arr);

// 销毁数组
int Destroy_Array(Dynamic_Array* arr);

#endif
